using System;

namespace ibba.src.noriskbo.ServiceGarantia
{
    public partial class GarantiaManual
    {
        public GarantiaManual()
        {
            this.IdOrigem = Constantes.CODIGO_ORIGEM_MANUAL;
            this.DescricaoOrigem = "Manual";
            this.Status = Constantes.StatusFluxoLM.RASCUNHO; 
            this.DescricaoStatus = "Rascunho";
        }
    }


    public partial class DetalheGarantiaManual
    {
        public DetalheGarantiaManual()
        {
            this.UsuarioIncluiu = AppHelper.NomeUsuario;
            this.DataInclusao = DateTime.Now;
            
            this.PercentualIncidencia = 100;
            this.QualidadeGarantia = 0;
            this.SobrepoeAutomatica = true;            
        }
    }


    public partial class GarantiaManualPendente
    {

        private bool _selecionado;
        public bool Selecionado
        {
            get
            {
                return this._selecionado;
            }
            set
            {
                if (!IsSelectable) value = false;

                if ((this._selecionado.Equals(value) != true))
                {
                    this._selecionado = value;
                    this.RaisePropertyChanged("Selecionado");
                }
            }
        }

        public bool IsSelectable
        {
            get
            {
                if (this.UsuarioSolicitou.ToLower() == AppHelper.NomeUsuario.ToLower())
                {
                    return (this.CodigoStatus == Constantes.StatusFluxoLM.RASCUNHO ||
                            this.CodigoStatus == Constantes.StatusFluxoLM.APROVADO ||
                            this.CodigoStatus == Constantes.StatusFluxoLM.BAIXA_OPERACIONAL);
                }
                else
                {
                    return (this.CodigoStatus != Constantes.StatusFluxoLM.BAIXA_VENCIMENTO);
                }
            }

        }

        public string ProdutoModalidade
        {
            get { return String.Format("{0} / {1}", this.CodigoProduto.Trim(), this.CodigoModalidade.Trim()); }
        }

        public DateTime DataSolicitacao
        {
            get
            {
                string data;
                if (this.DataAlteracao.HasValue)
                    data = this.DataAlteracao.ToString();
                else
                    data = this.DataInclusao.ToString();

                return Convert.ToDateTime(DateTime.Parse(data).ToString("dd/MM/yyyy"));
            }
        }

        public String UsuarioSolicitou
        {
            get
            {
                return (string.IsNullOrEmpty(this.UsuarioAlterou) ? this.UsuarioIncluiu : this.UsuarioAlterou);
            }
        }

    }


    public partial class GarantiaManualImportacao : IImportacaoModelBase
    {
        #region [ IImportacaoLote Members ]

        private string _statusImportacao;
        public string StatusImportacao
        {
            get { return _statusImportacao; }
            set
            {
                if (_statusImportacao != value)
                {
                    _statusImportacao = value;
                    this.RaisePropertyChanged("StatusImportacao");
                }
            }
        }

        private string _descricaoErro;
        public string DescricaoErro
        {
            get { return _descricaoErro; }
            set
            {
                if (_descricaoErro != value)
                {
                    _descricaoErro = value;
                    this.RaisePropertyChanged("DescricaoErro");
                }
            }
        }

        #endregion [ IImportacaoLote Members ]
    }


    public partial class GarantidorManualLote
    {
        public string FormatCPFouCNPJ 
        { 
            get
            {
                if (this.TipoPessoa.Equals("F", StringComparison.CurrentCultureIgnoreCase))
                    return Convert.ToDouble(this.CpfCnpj).ToString(@"000\.000\.000\-00");
                else
                    return Convert.ToDouble(this.CpfCnpj).ToString(@"000\.000\.000\/0000\-00");
            } 
        }

        private bool _error;
        public bool Error
        {
            get { return _error; }
            set 
            { 
                _error = value;
                this.RaisePropertyChanged("Error");
                this.RaisePropertyChanged("IndexImageFlag");
            }
        }
        
        public int IndexImageFlag
        {
            get 
            {
                if (this.Error)
                    return 99;
                else
                    return (int)this.FlagAcaoSQL;
            }
        }

    }
}

